package cn.yunyichina.provider.hisiface.service.impl;

import java.util.List;

import org.springframework.stereotype.Service;

import cn.yunyichina.provider.hisiface.service.AbstractService;
import cn.yunyichina.provider.iface.entity.common.ResCommon;
import cn.yunyichina.provider.iface.entity.hisiface.wards.AdviceListVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.AdviceListVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.CourseListVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.CourseListVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.DoctorListVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.DoctorListVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.InHospitalRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.InHospitalRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.MedRecordListVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.MedRecordListVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.OutHospitalRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.OutHospitalRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.PatHospitalRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.PatHospitalRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.PreSurgeryRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.PreSurgeryRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.SurgeryRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.SurgeryRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.wards.ZyPatientListVo;
import cn.yunyichina.provider.iface.entity.hisiface.wards.ZyPatientListVoResponse;

/**
 * 移动查房服务接口
 * 
 * @author zhou
 *
 */
@Service
public class HisifaceWardsServiceImpl extends AbstractService {

	/**
	 * 获取医生信息列表
	 * 
	 * @param doctorListVo
	 * @return
	 */
	public ResCommon<List<DoctorListVoResponse>> getDoctorList(DoctorListVo doctorListVo) {
		String methodCode = "getDoctorList";
		String methodName = "获取医生信息列表";
		
		return doExecList(methodCode, methodName, doctorListVo, DoctorListVoResponse.class);
	}
	
	/**
	 * 获取医生的住院病人列表
	 * 
	 * @param zyPatientListVo
	 * @return
	 */
	public ResCommon<List<ZyPatientListVoResponse>> getZyPatientList(ZyPatientListVo zyPatientListVo) {
		String methodCode = "getZyPatientList";
		String methodName = "获取医生的住院病人列表";
		
		return doExecList(methodCode, methodName, zyPatientListVo, ZyPatientListVoResponse.class);
	}
	
	/**
	 * 获取指定患者住院信息
	 * 
	 * @param patHospitalRecordVo
	 * @return
	 */
	public ResCommon<PatHospitalRecordVoResponse> getPatHospitalRecord(PatHospitalRecordVo patHospitalRecordVo) {
		String methodCode = "getPatHospitalRecord";
		String methodName = "获取指定患者住院信息";
		
		return doExec(methodCode, methodName, patHospitalRecordVo, PatHospitalRecordVoResponse.class);
	}
	
	/**
	 * 获取医嘱列表
	 * 
	 * @param adviceListVo
	 * @return
	 */
	public ResCommon<AdviceListVoResponse> getAdviceList(AdviceListVo adviceListVo) {
		String methodCode = "getAdviceList";
		String methodName = "获取医嘱列表";
		
		return doExec(methodCode, methodName, adviceListVo, AdviceListVoResponse.class);
	}
	
	/**
	 * 获取病历列表
	 * 
	 * @param medRecordListVo
	 * @return
	 */
	public ResCommon<MedRecordListVoResponse> getMedRecordList(MedRecordListVo medRecordListVo) {
		String methodCode = "getMedRecordList";
		String methodName = "获取病历列表";
		
		return doExec(methodCode, methodName, medRecordListVo, MedRecordListVoResponse.class);
	}
	
	/**
	 * 获取入院记录
	 * 
	 * @param inHospitalRecordVo
	 * @return
	 */
	public ResCommon<InHospitalRecordVoResponse> getInHospitalRecord(InHospitalRecordVo inHospitalRecordVo) {
		String methodCode = "getInHospitalRecord";
		String methodName = "获取入院记录";
		
		return doExec(methodCode, methodName, inHospitalRecordVo, InHospitalRecordVoResponse.class);
	}
	
	/**
	 * 获取病程记录
	 * 
	 * @param courseListVo
	 * @return
	 */
	public ResCommon<CourseListVoResponse> getCourseList(CourseListVo courseListVo) {
		String methodCode = "getCourseList";
		String methodName = "获取病程记录";
		
		return doExec(methodCode, methodName, courseListVo, CourseListVoResponse.class);
	}
	
	/**
	 * 获取手术记录
	 * 
	 * @param surgeryRecordVo
	 * @return
	 */
	public ResCommon<SurgeryRecordVoResponse> getSurgeryRecord(SurgeryRecordVo surgeryRecordVo) {
		String methodCode = "getSurgeryRecord";
		String methodName = "获取手术记录";
		
		return doExec(methodCode, methodName, surgeryRecordVo, SurgeryRecordVoResponse.class);
	}
	
	/**
	 * 获取术前小结
	 * 
	 * @param preSurgeryRecordVo
	 * @return
	 */
	public ResCommon<PreSurgeryRecordVoResponse> getPreSurgeryRecord(PreSurgeryRecordVo preSurgeryRecordVo) {
		String methodCode = "getPreSurgeryRecord";
		String methodName = "获取术前小结";
		
		return doExec(methodCode, methodName, preSurgeryRecordVo, PreSurgeryRecordVoResponse.class);
	}
	
	/**
	 * 获取出院记录
	 * 
	 * @param hospitalRecordVo
	 * @return
	 */
	public ResCommon<OutHospitalRecordVoResponse> getOutHospitalRecord(OutHospitalRecordVo hospitalRecordVo) {
		String methodCode = "getOutHospitalRecord";
		String methodName = "获取出院记录";
		
		return doExec(methodCode, methodName, hospitalRecordVo, OutHospitalRecordVoResponse.class);
	}
}
